"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};
//1. void 类型
let v; // 声明一个 void 类型的变量. 该变量的值, 只能是 undefined
v = undefined;
// v = null;// X
// v = 100;// X
// v = '200';// X
//下面代码, 表明函数运行的返回值类型为『undefined』
function test() {
    // return 123; // X
    // return 'love'; // X
    return; //这样写是可以的
}
//2. object 对象类型
let me; //声明 me 为 object 类型的变量
let o2 = {}; // 声明并赋值
me = {};
me = [];
me = () => { };
// me = 200; //X
//3. array 数组类型. TS 数组每个元素值的类型都是一样的
let arr = [1, 2, 5]; //声明数字类型的数组.
let arr2 = ['a', 'b', 'c'];
// arr.push('abc');// X
// arr.push(10);
arr[0].toFixed(2);
arr2[0].trim();
// arr2[0].toFixed();// X
//4. 元组 
let t = [1, '张三', 28];
// t[0].toFixed();
// t[1].toString();
let xiaolong = [1, '小龙'];
//数组的每一个元素都是一个元组
let stus = [xiaolong, [2, '小明'], [3, '小刚']];
//5. 枚举类型  defineProperty   enumerable
var Gender;
(function (Gender) {
    Gender["Female"] = "\u5973";
    Gender["Male"] = "\u7537";
    Gender["Secret"] = "\u4FDD\u5BC6";
})(Gender || (Gender = {}));
let xiaohigh = {
    name: 'xiaohigh',
    age: 18,
    gender: Gender.Male
};
//6. 联合类型
let u;
u = 'love';
u = 521;
// u = true;
// Array.prototype.find()  查找满足条件的元素
//7. 类型断言.  肯定的说.
(() => __awaiter(void 0, void 0, void 0, function* () {
    let v2;
    //为 v2 变量赋值
    v2 = yield new Promise((resolve) => {
        resolve('iloveyou');
    });
    //调用
    console.log(v2.slice(0, 5));
    //
    console.log(v2.slice(0, 5));
}))();
//8. 类型推断
let res = 100; // TS 推断出 res 类型是数字
// res = 'iloveyou'; // X
let res2; // res2 的类型为 any
res2 = 123;
res2 = 'iloveyou';
